Contact centers are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria. In many existing systems, the criteria for servicing the contact from the moment that the contact center becomes aware of the contact until the contact is connected to an agent are customer-specifiable (i.e., programmable by the operator of the contact center), via a capability called vectoring. Normally in present-day Automated Contact Distributors (ACDs) when the ACD system's controller detects that an agent has become available to handle a contact, the controller identifies all predefined contact-handling queues for the agent (usually in some order of priority) and delivers to the available agent the highest-priority oldest contact that matches the agent's highest-priority queue.
Best service routing is one example of a routing logic used in centralized and distributed contact centers. In current best service routing, each ACD in the contact center uses a single message to represent a single skill and further describe the state of that skill. Copies of this single skill message are transmitted to all other ACDs in the contact center, thereby updating every ACD with the same state information for the transmitting ACD. By keeping each ACD in a contact center aware of all other ACD states, a uniform work item routing logic can be applied by all ACDs and intelligent routing decisions can be made in a distributed contact center.
One problem with current best service routing algorithms is that they consume a large amount of network bandwidth due to the fact that a single message has to be used for a single skill. Therefore, if a contact center has a thousand skills to describe an ACD has to send a thousand messages every predetermined period of time to update all other ACDs as to the skill status for every skill. If a contact center has three remote locations each having their own ACD, then a single ACD must send two thousand messages to describe the state of every skill to the other ACDs. Further exacerbating the problem is that the other two ACDs are required to also send two thousand messages every predetermined period of time. These additional messages place further burdens on the communication network connecting the ACDs.
As can be appreciated by one skilled in the art, the over utilization of the network bandwidth is not desired. Accordingly, the current solution is to greatly increase the amount of time between status updates. Most contact centers employing best service routing only have ACDs send out status updates once every 20 to 30 seconds or so. Increasing the frequency of status updates any more would increase network usage costs greatly and/or result in network congestion. It is highly desirable to receive and send more status updates to help create informed work item routing decisions. But, given the bandwidth limitations of most networks, it is impractical to accommodate such high frequency status updates.